<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Join (Unix)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Join_(Unix)"> <link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Join_Unix rootpage-Join_Unix skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">join (Unix)</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr"><p class="mw-empty-elt">
</p>
<div class="infobox_v3 infobox infobox--frwiki noarchive" style="width:260px">
<div class="entete icon informatique" style="color: #000000;"><style data-mw-deduplicate="TemplateStyles:r228712691">
/* start https://fr.wikipedia.org/ */
.mw-parser-output .entete.informatique{background-image:url("./_mw_/Picto.nfo.png")}
/* end https://fr.wikipedia.org/ */
</style>
<div>Join</div>
</div>
<p class="mw-empty-elt">
</p>
<table><caption style="color:#000000;">Informations</caption>
<tbody><tr>
<th scope="row"> Type
</th>
<td>
<span class="wd_p31">Utilitaire UNIX <small>(<a href="https://www.wikidata.org/wiki/Q18343316" class="extiw external" title="d:Q18343316"><span class="indicateur-langue" title="Voir l'élément Wikidata correspondant">d</span></a>)</small></span></td>
</tr>
</tbody></table>
<p class="mw-empty-elt">
</p>
</div>
<p><b>join</b> est une commande <a href="POSIX" title="POSIX">POSIX</a> qui permet de fusionner les lignes de deux fichiers ayant des champs communs. Elle réalise des <a href="Jointure_(informatique)" title="Jointure (informatique)">jointures</a>, au sens de l'<a href="Alg%C3%A8bre_relationnelle" title="Algèbre relationnelle">algèbre relationnelle</a>, directement sur des fichiers texte.
</p><p>Cette commande compare les lignes de deux fichiers triés une à une et si une correspondance est trouvée sur les colonnes passées en argument, elle affichera le regroupement des champs présents sur les mêmes lignes.
</p>
<div class="mw-heading mw-heading2"><h2 id="Exemple">Exemple</h2></div>
<p>Soit le fichier <b><code>contacts</code></b> contenant la liste des membres d'une famille (id, nom, téléphone):
</p>
<pre>ID_1 Jean 123456
ID_2 Caroline 54321
ID_3 Louis 98765
</pre>
<p>Et le fichier <b><code>ordinateurs</code></b> contenant la liste des ordinateurs de la maison (id_ordinateur, ordinateur, id_personne).
</p>
<pre>L01 <a href="Linux" title="Linux">Linux</a> ID_1
M01 Mac ID_2
W01 <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> ID_2
S01 Solaris ID_4
</pre>
<p><br>
Premier cas simple. On veut joindre les deux fichiers sur la colonne 1 du premier fichier (-11) et la colonne 3 du deuxième fichier (-23).
</p>
<pre>% join -11 -23 contacts ordinateurs
ID_1 Jean 123456 L01 Linux
ID_2 Caroline 54321 M01 Mac
ID_2 Caroline 54321 W01 Windows
</pre>
<p><br>
Si on souhaite afficher la liste des couples personne-ordinateurs de la maison en formatant la sortie (option -o):
</p>
<pre>% join -11 -23 -o 1.2,2.2 contacts ordinateurs
Jean Linux
Caroline Mac
Caroline Windows
</pre>
<p>Dans le cas d'une <a href="Base_de_donn%C3%A9es" title="Base de données">base de données</a> on parlerait d'une <a href="Jointure_(informatique)" title="Jointure (informatique)">jointure</a> simple (STRAIGHT JOIN).
</p><p><br>
Pour afficher la liste de toutes les personnes, propriétaire ou non d'un ordinateur:
</p>
<pre>% join -a1 -e'NULL' -11 -23 -o 1.2,2.2 contacts ordinateurs
Jean Linux
Caroline Mac
Caroline Windows
Louis NULL
</pre>
<p>Il s'agirait ici d'une jointure gauche (LEFT JOIN) en <a href="SGBD" class="mw-redirect" title="SGBD">SGBD</a>. Louis (ID_3) n'est effectivement pas repris dans le fichier <b><code>ordinateurs</code></b>.
</p><p><br>
Et enfin, la jointure droite (RIGHT JOIN), la liste de tous les ordinateurs et de leur utilisateur éventuel.
</p>
<pre>% join -a2 -e'NULL' -11 -23 -o 2.2,1.2 contacts ordinateurs
Linux Jean
Mac Caroline
Windows Caroline
Solaris NULL
</pre>
<p>En effet, dans le fichier <b><code>ordinateurs</code></b>, le Solaris pointe vers un id (ID_4) qui n'existe pas dans le fichier <code>contacts</code>.
</p><p><br>
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<p><a href="GNU_Core_Utilities" title="GNU Core Utilities">GNU Core Utilities</a>
</p>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><abbr class="abbr indicateur-langue" title="Langue : français">(fr)</abbr> <a rel="nofollow" class="external text" href="http://manpages.debian.net/cgi-bin/man.cgi?query=join&apropos=0&sektion=0&manpath=Debian+Sid&format=html&locale=fr">Page de manuel de join</a></li></ul>
<div class="navbox-container" style="clear:both;">
</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de l’informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2024-02-10" href="https://fr.wikipedia.org/wiki/?title=Join_(Unix)&oldid=212335581">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>